//package com.schedualnew.mq.yihuiesb.service;
//
//
//import com.ewell.sdk.business.EwellServiceTool;
//import com.ewell.sdk.domain.MessageEntity;
//import org.apache.commons.lang.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Service;
//
//@Service
//public class MQService {
//    private static Logger log = LoggerFactory.getLogger(MQService.class);
//
//
//    private boolean bConnectMQ = false;
//
//
//    private EwellServiceTool ewellServiceTool = null;
//    private static String cid = null;
//    private static int failTimes = 0;
//
//    private static final String strQueueMgr = "";
//
//
//    private boolean connectMQ() {
//        if (this.bConnectMQ) {
//            return true;
//        }
//        synchronized (MQService.class) {
//            if (this.bConnectMQ) {
//                return true;
//            }
//            try {
//                log.info("准备连接队列管理器,mgr:" + strQueueMgr);
//                this.ewellServiceTool = new EwellServiceTool();
//
//
//                cid = this.ewellServiceTool.connect(strQueueMgr);
//                log.info(String.format("连接队列管理器成功 mgr(%s)", new Object[]{strQueueMgr}));
//                this.bConnectMQ = true;
//            } catch (Exception e) {
//                e.printStackTrace();
//                log.error(String.format("连接队列管理器失败 mgr(%s): %s", new Object[]{strQueueMgr, e.getMessage()}));
//                this.bConnectMQ = false;
//                return false;
//            }
//        }
//        return true;
//    }
//
//
//    private synchronized void disconnectMQ() {
//        try {
//            this.ewellServiceTool.disconnect();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        this.bConnectMQ = false;
//    }
//
//
//    public boolean popMsg(String queueName, String msgId, StringBuffer readMsg, MsgType pushType) {
//        if (!connectMQ()) {
//            return false;
//        }
//        boolean bReadSucc = false;
//
//        try {
//            MessageEntity strMsg = this.ewellServiceTool.getMsgById(cid, queueName, 10000, msgId);
//            if (StringUtils.isNotEmpty(strMsg.getMsg())) {
//                readMsg.append(strMsg.getMsg());
//            }
//            log.info("QueueName({}), MsgId({}), 返回内容:{}", new Object[]{queueName, msgId, strMsg.getMsg()});
//            bReadSucc = true;
//        } catch (Exception e) {
//
//            if (e.getMessage().contains("2033")) {
//                bReadSucc = true;
//            } else {
//                log.error("MQ异常：" + e.getMessage());
//                if (reset()) {
//                    popMsg(queueName, msgId, readMsg, pushType);
//                }
//            }
//        }
//        return bReadSucc;
//    }
//
//
//    public boolean pushMsg(String queueName, String queryMsg, StringBuffer msgId, MsgType pushType) {
//        if (!connectMQ()) {
//            return false;
//        }
//        boolean bPushSucc = false;
//
//        try {
//            log.info("发送消息：queue({}), msg({})", queueName, queryMsg);
//            String strMsgId = this.ewellServiceTool.putMsg(cid, queueName, queryMsg);
//            log.info("消息id：queue({}), msgId({})", queueName, strMsgId);
//            msgId.append(strMsgId);
//            bPushSucc = true;
//        } catch (Exception e) {
//            log.error("Exception：{}", e.getMessage());
//            if (reset()) {
//                pushMsg(queueName, queryMsg, msgId, pushType);
//            }
//        }
//        return bPushSucc;
//    }
//
//    public boolean pushMsgWithId(String queueName, String queryMsg, String msgId) {
//        if (!connectMQ()) {
//            return false;
//        }
//        boolean bPushSucc = false;
//
//        try {
//            log.info("发送消息：queue({}), msg({})", queueName, queryMsg);
//            bPushSucc = this.ewellServiceTool.composePutMsgWithId(strQueueMgr, queueName, queryMsg, msgId).booleanValue();
//            log.info("消息结果id：msgId({}), result({})", msgId, Boolean.valueOf(bPushSucc));
//        } catch (Exception e) {
//            log.error("Exception：{}", e.getMessage());
//            if (reset()) {
//                pushMsgWithId(queueName, queryMsg, msgId);
//            }
//        }
//        return bPushSucc;
//    }
//
//
//    public boolean reset() {
//        if (failTimes >= 5) {
//            return false;
//        }
//        disconnectMQ();
//        this.bConnectMQ = false;
//        failTimes++;
//        return true;
//    }
//}
